using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("TimeUtils")]
	public class TimeUtils : MonoClass
	{
		public enum ElapsedTimeType
		{
			SECONDS,
			MINUTES,
			HOURS,
			YESTERDAY,
			DAYS,
			WEEKS,
			MONTH_AGO
		}

		[Attribute38("TimeUtils.ElapsedStringSet")]
		public class ElapsedStringSet : MonoClass
		{
			public string m_seconds => method_4("m_seconds");

			public string m_minutes => method_4("m_minutes");

			public string m_hours => method_4("m_hours");

			public string m_yesterday => method_4("m_yesterday");

			public string m_days => method_4("m_days");

			public string m_weeks => method_4("m_weeks");

			public string m_monthAgo => method_4("m_monthAgo");

			public ElapsedStringSet(IntPtr address, string className)
				: base(address, className)
			{
			}

			public ElapsedStringSet(IntPtr address)
				: this(address, "ElapsedStringSet")
			{
			}
		}

		public static int SEC_PER_MINUTE => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "TimeUtils", "SEC_PER_MINUTE");

		public static int SEC_PER_HOUR => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "TimeUtils", "SEC_PER_HOUR");

		public static int SEC_PER_DAY => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "TimeUtils", "SEC_PER_DAY");

		public static int SEC_PER_WEEK => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "TimeUtils", "SEC_PER_WEEK");

		public static int MS_PER_SEC => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "TimeUtils", "MS_PER_SEC");

		public static int MS_PER_MINUTE => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "TimeUtils", "MS_PER_MINUTE");

		public static int MS_PER_HOUR => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "TimeUtils", "MS_PER_HOUR");

		public static DateTime EPOCH_TIME => MonoClass.smethod_6<DateTime>(TritonHs.MainAssemblyPath, "", "TimeUtils", "EPOCH_TIME");

		public static ElapsedStringSet SPLASHSCREEN_DATETIME_STRINGSET => MonoClass.smethod_7<ElapsedStringSet>(TritonHs.MainAssemblyPath, "", "TimeUtils", "SPLASHSCREEN_DATETIME_STRINGSET");

		public static string DEFAULT_TIME_UNITS_STR => MonoClass.smethod_8(TritonHs.MainAssemblyPath, "", "TimeUtils", "DEFAULT_TIME_UNITS_STR");

		public TimeUtils(IntPtr address, string className)
			: base(address, className)
		{
		}

		public TimeUtils(IntPtr address)
			: this(address, "TimeUtils")
		{
		}

		public static long BinaryStamp()
		{
			return MonoClass.smethod_14<long>(TritonHs.MainAssemblyPath, "", "TimeUtils", "BinaryStamp", Array.Empty<object>());
		}

		public static DateTime ConvertEpochMicrosecToDateTime(long microsec)
		{
			return MonoClass.smethod_14<DateTime>(TritonHs.MainAssemblyPath, "", "TimeUtils", "ConvertEpochMicrosecToDateTime", new object[1] { microsec });
		}

		public static string GetElapsedTimeStringFromEpochMicrosec(long microsec, ElapsedStringSet stringSet)
		{
			return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "TimeUtils", "GetElapsedTimeStringFromEpochMicrosec", microsec, stringSet);
		}

		public static ulong DateTimeToUnixTimeStamp(DateTime time)
		{
			return MonoClass.smethod_14<ulong>(TritonHs.MainAssemblyPath, "", "TimeUtils", "DateTimeToUnixTimeStamp", new object[1] { time });
		}

		public static DateTime UnixTimeStampToDateTimeUtc(long secondsSinceEpoch)
		{
			return MonoClass.smethod_14<DateTime>(TritonHs.MainAssemblyPath, "", "TimeUtils", "UnixTimeStampToDateTimeUtc", new object[1] { secondsSinceEpoch });
		}

		public static long GetEpochTime()
		{
			return MonoClass.smethod_14<long>(TritonHs.MainAssemblyPath, "", "TimeUtils", "GetEpochTime", Array.Empty<object>());
		}

		public static string GetElapsedTimeString(long seconds, ElapsedStringSet stringSet)
		{
			return MonoClass.smethod_13(TritonHs.MainAssemblyPath, "", "TimeUtils", "GetElapsedTimeString", new Class276.Enum20[2]
			{
				Class276.Enum20.I8,
				Class276.Enum20.Class
			}, seconds, stringSet);
		}

		public static string GetElapsedTimeString(int seconds, ElapsedStringSet stringSet)
		{
			return MonoClass.smethod_13(TritonHs.MainAssemblyPath, "", "TimeUtils", "GetElapsedTimeString", new Class276.Enum20[2]
			{
				Class276.Enum20.I4,
				Class276.Enum20.Class
			}, seconds, stringSet);
		}

		public static string GetElapsedTimeString(ElapsedTimeType timeType, int time, ElapsedStringSet stringSet)
		{
			return MonoClass.smethod_13(TritonHs.MainAssemblyPath, "", "TimeUtils", "GetElapsedTimeString", new Class276.Enum20[3]
			{
				Class276.Enum20.ValueType,
				Class276.Enum20.I4,
				Class276.Enum20.Class
			}, timeType, time, stringSet);
		}

		public static string GetElapsedTimeString(ElapsedTimeType timeType, long time, ElapsedStringSet stringSet)
		{
			return MonoClass.smethod_13(TritonHs.MainAssemblyPath, "", "TimeUtils", "GetElapsedTimeString", new Class276.Enum20[3]
			{
				Class276.Enum20.ValueType,
				Class276.Enum20.I8,
				Class276.Enum20.Class
			}, timeType, time, stringSet);
		}

		public static string GetDevElapsedTimeString(TimeSpan span)
		{
			return MonoClass.smethod_13(TritonHs.MainAssemblyPath, "", "TimeUtils", "GetDevElapsedTimeString", new Class276.Enum20[1] { Class276.Enum20.ValueType }, span);
		}

		public static string GetDevElapsedTimeString(long ms)
		{
			return MonoClass.smethod_13(TritonHs.MainAssemblyPath, "", "TimeUtils", "GetDevElapsedTimeString", new Class276.Enum20[1] { Class276.Enum20.I8 }, ms);
		}

		public static string GetDevElapsedTimeString(float sec)
		{
			return MonoClass.smethod_13(TritonHs.MainAssemblyPath, "", "TimeUtils", "GetDevElapsedTimeString", new Class276.Enum20[1] { Class276.Enum20.R4 }, sec);
		}

		public static float ForceDevSecFromElapsedTimeString(string timeStr)
		{
			return MonoClass.smethod_14<float>(TritonHs.MainAssemblyPath, "", "TimeUtils", "ForceDevSecFromElapsedTimeString", new object[1] { timeStr });
		}

		public static string ParseTimeUnitsStr(string unitsStr)
		{
			return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "TimeUtils", "ParseTimeUnitsStr", unitsStr);
		}
	}
}
